package Servidor;

import java.util.ArrayList;
import Servidor.Pregunta;

public class Tema {

	private Asignatura _asignatura;
	private ArrayList<Pregunta> _listaPreguntas = new ArrayList<Pregunta>();
	private String _nombre;
	private boolean _activo;
	
	public Tema(Asignatura asig) {
		_asignatura = asig;
		_activo = true;
	}
        
        public Tema() {
            _asignatura = null;
            _activo = false;
        }

	public void addPregunta(Pregunta aP) {
		_listaPreguntas.add(aP);
	}

	public Pregunta[] getPreguntas(int aN) throws Exception {
		Pregunta[] preguntas = new Pregunta[aN];
		int[] preguntasSeleccionadas = new int[aN];
		
		if (aN > _listaPreguntas.size())
			throw new Exception("Se pide seleccionar " + aN + " preguntas del tema " + this._nombre + " (de la asignatura " + this._asignatura.getNombre() + ") y solo tiene " + _listaPreguntas.size() + " preguntas.");
		
		for (int i = 0; i < aN; i++) {
			boolean ok = false;
			int seleccionada = -1;
			
			while (!ok) {
				seleccionada = (int) Math.round(Math.random() * (_listaPreguntas.size() - 1));
				
				ok = true;
				//compruebo que no se haya seleccionado ya
				for (int j = 0; j < i; j++) {
					if (preguntasSeleccionadas[j] == seleccionada) {
						ok = false;
						break;
					}
				}
			}
			
			preguntasSeleccionadas[i] = seleccionada;
			preguntas[i] = _listaPreguntas.get(seleccionada);
		}
		
		return preguntas;
	}

	public String getNombre() {
		return this._nombre;
	}

	public void setNombre(String aNombre) {
		this._nombre = aNombre;
	}

	boolean getActivo() {
		return _activo;
	}

	void setActivo(boolean b) {
		_activo = b;
	}
	
	int getNumPreguntas() {
		return _listaPreguntas.size();
	}
}